﻿@{
    //  レイアウト ページとページ タイトルを設定します
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "パスワードのリセット";

    var newPasswordError = "";
    var confirmPasswordError = "";
    var passwordResetTokenError = "";
    var passwordResetToken = Request.Form["resetToken"] ?? Request.QueryString["resetToken"];
    var disabledAttribute = "";

    bool isValid = true;
    bool tokenExpired = false;
    bool isSuccess = false;

    if (IsPost) {
        var newPassword = Request["newPassword"];
        var confirmPassword = Request["confirmPassword"];

        if (newPassword.IsEmpty()) {
            newPasswordError = "新しいパスワードを入力してください。";
            isValid = false;
        }

        if (confirmPassword != newPassword) {
            confirmPasswordError = "パスワードの確認で新しいパスワードが一致しませんでした。";
            isValid = false;
        }

        if (passwordResetToken.IsEmpty()) {
            passwordResetTokenError = "パスワード リセット トークンを入力してください。 トークンは電子メールで送信済みです。";
            isValid = false;
        }

        if (isValid) {
            if (WebSecurity.ResetPassword(passwordResetToken, newPassword)) {   
                disabledAttribute = @"disabled=""disabled""";
                isSuccess = true;
            } else {
                passwordResetTokenError = "パスワード リセット トークンが無効です。";
                tokenExpired = true;
                isValid = false;
            }
        } else {
            isValid = false;
        }
    }
}

@if (!isValid) {
    <p class="message error">
        @if (tokenExpired) {
            <text>パスワード リセット トークンが間違っています。または、有効期限が切れている可能性があります。 新しいトークンを生成するには、<a href="@Href("~/Account/ForgotPassword")">パスワードを忘れた場合のページ</a>にアクセスしてください。</text>
        } else {
            <text>パスワードをリセットできませんでした。 エラーを修正し、再試行してください。</text>
        }
    </p>
}

@if (isSuccess) {
    <p class="message success">
        パスワードが変更されました!  <a href="@Href("~/Account/Login")" title="ログイン">ここをクリック</a>して ログインしてください。
    </p>
}

<form method="post" action="">
    <fieldset>
        <legend>パスワード変更のフォーム</legend>
        @if (!WebMail.SmtpServer.IsEmpty()) {
            <p>新しいパスワードをここに入力し、[パスワードのリセット] をクリックしてパスワードを変更してください。<em></em></p>
            <ol>
                <li class="new-password">
                    <label for="newPassword">新しいパスワード:</label> 
                    <input type="password" id="newPassword" name="newPassword" title="新しいパスワード" @disabledAttribute @if(!newPasswordError.IsEmpty()){<text>class="error-field"</text>} />
                    @if (!newPasswordError.IsEmpty()) {
                        <label for="newPassword" class="validation-error">@newPasswordError</label>
                    }
                </li>
                <li class="confirm-password">
                    <label for="confirmPassword">パスワードの確認入力:</label> 
                    <input type="password" id="confirmPassword" name="confirmPassword" title="新しいパスワードの確認入力" @disabledAttribute @if(!confirmPasswordError.IsEmpty()){<text>class="error-field"</text>} />
                    @if (!confirmPasswordError.IsEmpty()) {
                        <label for="confirmPassword" class="validation-error">@confirmPasswordError</label>
                    }
                </li>
                <li class="reset-token">
                    <label for="resetToken">パスワード リセット トークン:</label> 
                    <input type="text" id="resetToken" name="resetToken" value="@passwordResetToken" title="パスワード リセット トークン" @disabledAttribute @if(!passwordResetTokenError.IsEmpty()){<text>class="error-field"</text>} />
                    @if (!passwordResetTokenError.IsEmpty()) {
                        <label for="resetToken" class="validation-error">@passwordResetTokenError</label>
                    }
                </li>
            </ol>
            <p class="form-actions">
                <input type="submit" value="Reset Password" title="パスワードのリセット" @disabledAttribute/>
            </p>
        } else {
            <p class="message info">
                SMTP サーバーが適切に構成されていないため、この Web サイトでは 
                パスワードの回復が無効です。 パスワードをリセットするには、このサイトの 
                所有者に連絡してください。
            </p>
        }
    </fieldset>
</form>

